预见未来丨计算机“系统”视角中的未来愿景
编者按:自1998年成立以来,微软亚洲研究院一直致力于推动计算机科学领域的前沿技术发展。在建院20周年之际,我们特别邀请微软亚洲研究院不同领域的专家共同撰写“预见未来”系列文章,以各自领域的前瞻视角,从机器学习、计算机视觉、系统架构、图形学、自然语言处理等多个方向出发,试图描绘一幅未来科技蓝图。
作为本系列文章的第一篇, 本文将探索计算机研究领域背后的底层技术——系统,带大家了解什么是好的计算机底层系统,我们又该如何进行面向未来的系统创新和设计。
当你用搜索引擎方便地查询各种资料时;当你“调戏”小冰、Siri,看看它们究竟是人工智能还是人工智障时;当你体验着“自动驾驶”的惊险和痛快时,可能只是在某个设备上点一下应用,但整个良好的体验过程却是由计算机系统、应用与算法合力带来的。计算机系统、应用与算法的完美结合,才是推动整个计算机行业的源动力。
各种技术变革的后面,是底层计算机系统的创新和变革。
我们生活在一个令人激动的系统研究与创新时代。这些创新让计算机系统得以处理前所未见的数据规模和应付高度复杂的大型系统问题。在这些创新中,大规模分布式系统的进步以及其他相关系统领域诸如数据库系统、程序语言与编译器、理论与形式化方法、硬件与体系结构、安全与隐私和应用密码学的进步都起到了关键性的作用。
然而,“无形”的系统因为其“看不见摸不着”的特点,很少成为媒体的焦点。
究竟什么是计算机底层系统?一个好的计算机系统究竟意味着什么?面向未来的系统创新和设计需要面对怎样的技术挑战和技术战略前瞻?
“大音希声,大象无形”是“好系统”的样子。
“无形”这一系统设计的基本原则就督促现代系统设计必须“远离大众视线”。好的计算机系统就应该自然而然地陪伴着大众,隐身在系统支持的应用之后。当一个系统的设计有问题时,它也就 “有形”并且让人痛苦了。
系统就像是建筑的地基,应用就是地基上的美丽建筑,而应用开发者就是建筑师。在计算机领域,我们不妨将这个抽象又简单的名词理解为平台。好的地基设计使得建筑师可以肆意发挥创造力而不用关心地基的细节。优秀的系统追求有序、简洁和一致。而错误的系统设计往往给大众带来某种可见的随意、混乱以至难以规模化管理。因此,现代系统设计的一个重要目标就是设计合适的抽象来避免用户直接面对底层系统的复杂性。
操作系统中的进程、缓存和虚拟内存的抽象;数据库系统的关系模型和SQL查询语言的抽象;分布式存储系统的一致性协议;搜索引擎系统中的正向和反向索引表;以及最近的深度学习系统设计中引入的张量、区块链中的智能合约、云计算中的虚拟化及容器技术,都无不体现出新系统中抽象这一技术的重要性。
在可见的未来,系统研究仍将把“无形”作为重要设计理念,让应用开发者和大众可以轻松完成任务,无需面对底层系统的复杂性。从而赋能更多科研人员、开发者和实践者,进而推动更多技术的创新发展。
系统设计必须面向未来。
一个好的地基应该是一个能够应对未来变化的地基,同时系统设计的不断创新将加速创造和塑造这个世界,从而重新定义我们未来生活的模式。系统研究构想的未来是什么呢?对于未来世界的简单形容将会是“智能无处不在”,背后支持它的将是无处不在的存储和计算能力,它们无形的连接着个人和整个世界,从端到云。
未来的技术趋势也将是一个现实世界和虚拟世界边界消失的过程,也可以简单地说是“虚拟和现实世界的融合”。而这些变化背后需要大量的各型可嵌入可连接的传感器和执行装置、智能化的数据分析和服务以及混合现实和浸入式体验设备的支持。
那么,为更好地应对未来技术的需求和发展,系统研究需要什么样的技术路线?未来系统技术的挑战及其对未来愿景的推动作用又是怎样的?
再一次去中心化
技术趋势:从完全中心化的云计算进化到新的去中心化的计算。
如今,我们正处在计算范式的第二次巨大历史变革时期,即从分布式的个人计算时代到新的中心化的云计算时代。
推动这每一次计算范式变革的力量都来自于计算机技术本身的发展,新技术带来的各种新型应用,以及它们对经济和社会发展的巨大影响。现在一个显然的技术趋势就是如何从完全中心化的云计算进化到新的去中心化的计算。例如:IoT和边缘计算的兴起就在这个背景下产生。更重要的,从计算机架构和哲学范畴出发,去中心化一直是整个世界占主导地位的一种系统设计。在中心化的系统中,基于联盟的私有化区块链系统是难以实现的。
完全去中心化也是不切实际的。我们相信未来让数据和计算如何无缝在云端和终端迁移、交互以及协作将成为系统研究的一个重要方向。这其中,从操作系统、存储系统乃至一致性协议都需要进一步改进。
可扩展的强一致性
强一致性协议一直是分布式系统研究的核心。可靠的分布式控制系统、数字银行提供的可靠交易等都依靠着一致性协议的设计与实现。随着互联网连接了更多的地域和人群,分布式系统需要处理的关键数据规模也不断扩大。在跨洲际的数据中心间如何实现可扩展的强一致性协议也将是系统研究的重点。
一致性、可用性和网络容错支持一直是分布式系统强一致性协议难以一起解决的三个问题。但是随着网络技术的进步,可扩展的强一致性协议在数据中心乃至互联网上得到了很大的发展。数据中心内乃至跨数据中心的一致性协议,从以前的非强一致性协议不断地转换为以Paxos和BFT为基础的强一致性协议。而区块链的出现,也让整个互联网为背景的强一致性协议变成可能。在未来的发展中,通过数据分区、图为基础的排序、异步协商以及更创新的协议设计,可扩展的强一致性协议的性能和应用范围将得到更进一步的提升。
无限的数据与计算
效率、可用性和可靠性是计算和数据平台最重要的指标,亦是研究的重点。不同于传统数据库,在云计算这个领域中,计算和存储通常是分离的系统。计算平台的发展中,从Map-Reduce,Spark到Flink, 较好地解决了计算效率及可扩展性的问题。未来计算对实时性的要求越来越高,如何针对性的设计相应的计算平台,是系统研究的一个课题。存储平台的发展,从BigTable,MongoDB到Spanner, 遵循以提高可扩展性为首要需求,但对一致性的要求也越来越强的特点。高可扩展及强一致性的存储平台将是未来的趋势之一。
分布式数据库也在不断发展,支持的数据种类开始多样化,从图数据到文档数据和流数据。在可见的未来,同一个系统如何能够同时处理事务性的应用(OLTP)和分析性的应用(OLAP),如何能够同时处理表、图、文档等不同的数据类型,如何能够支持从单机到整个数据中心的扩展,如何能够支持跨数据中心的一致性和FailOver, 这些都是重要的问题并且正得到解决。
智能边缘计算
随着软硬件技术的不断进步,各种新型智能设备不断涌现,推动了智能家居、自动驾驶、智能工厂、智慧城市等新应用新场景的不断发展。相应地,计算模式也再次展现出了去中心化的趋势。即正在从集中式的云计算模式逐渐演变成云计算和边缘计算共存的分布式模式。其中,边缘计算是指边缘设备可以脱离云计算进行本地数据处理和独立智能决策。边缘计算正在快速发展,在将来的计算中发挥着越来越重要的作用。
智能边缘计算的兴起其实是一件水到渠成的事情。首先,随着万物互联和设备智能化的趋势不断加深,数据呈现出了爆炸式的增长。传输和处理这些数据远远超出了目前网络和数据中心的承受能力。其次,云计算无法满足一些新场景新应用的需求,比如实时数据处理和用户隐私数据保护。以自动驾驶为例,海量的数据需要得到实时的处理,从而系统才能对各种路况进行快速反应。把这些数据传送到云上进行处理会带来过高的延迟,无法满足自动驾驶系统的实时性要求。很多数据都包含用户隐私,比如智能家居中的智能音箱和智能摄像头采集的数据。从保护用户隐私的角度来说,这些数据不应该传送到云上处理。这些需求使得在边缘设备上对数据进行本地处理成了唯一选项。另外,最重要的是,硬件的发展使智能边缘计算成为可能。随着专用智能芯片比如各种深度学习芯片的出现,边缘设备也拥有了巨大的视觉和语音等方面的数据处理能力,为各种智能边缘计算的应用提供了有力的支撑。
智能边缘计算也面临着诸多挑战。边缘设备的计算能力和内存大小有限,一些庞大的模型运行在边缘设备上将导致系统性能承压。同时,对于依赖于电池供电的移动设备来说,能耗也是一个很大的问题。因此,如何对系统的性能和能耗进行优化,是一个值得持续研究的课题。另外,训练一个好的深度学习模型往往需要花费巨大的人力物力。在边缘计算中,模型是存储和运行在边缘设备上的。因此,如何保护模型数据不被非法复制和盗用就成了一个重要的问题。
需要指出的是,边缘计算并不是要替代云计算,而是和云计算有着很强的互补关系。比如,遍布各地的边缘设备就是一个很令人头疼的问题。边缘设备可以连接到一个云服务上,通过云服务对边缘设备进行管理、监控、更新和部署,从而大大降低管理成本,保证边缘设备的顺利运行。
边缘计算和云计算可以相互结合,共同完成一些任务。比如在街道监控的场景下,边缘的智能摄像头可以对数据进行预处理,然后再把处理过的数据发送到云上进行进一步处理,比如进行人脸识别和车号牌识别等。这样就能充分利用边缘和云的所有资源,达到快速事件检测、降低网络传输、按需进行数据深度处理的效果。我们相信,边缘计算和云计算一定会协同发展,为人工智能时代的各种新应用、新场景和新业务提供越来越好的服务。
安全、隐私和可信计算为重要基础
技术趋势:安全硬件、区块链和可验证的软件技术将一起构成新的安全基础。
现实世界和虚拟世界的不断融合,去中心化计算需要新的安全、隐私和可信的技术进步。对于一直以安全、隐私和信任作为核心的系统领域,会更多的思考如何把数据的所有权安全的交还给用户,而仅以合规的模式来商业化这些数据,以达到为更多人的提供高效技术。
未来,安全硬件、区块链和可验证的软件技术将一起构成这个新的安全基础。安全硬件将是信任的基石:例如Intel推出的SGX技术和ARM推出的TrustZone基础。
在区块链背后,是以新的Byzantine容错的一致性协议、新的哈希链式数据结构、采用零知验证和多方安全计算加密的数据块交换协议以及去中心化的协议而设计的。
这些新的系统设计带来的是未来的全新加密经济学系统,将为人们带来一个可信的、隐私安全的合作、通信和交易协议,即使在不完全信任的多个实体间。
最后,可验证的软件的进展也将稳固这个新的安全基础。从小规模的协议验证到分布式通信协议的验证,未来的软件验证技术将在更复杂的软件系统中得到实际应用。
区块链
随着第一个可行区块链系统Bitcoin的落地实现和广泛应用,人们看到了去中心化的、去信任的、中立性的系统的巨大发展潜力。数以千计的加密货币系统随之诞生,有的只是简单复制Bitcoin,有的则在功能和性能上有着显著改进。接着以太坊诞生了。它首次在一个分布于全球的区块链系统上实现了智能合约,使得用户能编程创建去中心化应用。智能合约极大地降低区块链应用的开发门槛,开发者无需从底层编写代码,构建底层系统架构和部署网络,而是在以太坊上直接编程开发各种区块链应用。这促使了新型加密货币、价值代币、新型合作交易协议的爆炸性增长。随着越来越多研究人员和开发者对区块链技术的探索研究,区块链技术的理论基础、开发技术、设计理念、系统结构等各方面都将快速稳健地向前发展。
在区块链系统的发展与创新中,有几个值得关注的方向:
1)区块链系统正从网络、存储、计算紧密结合的一体化设计,转为分层分片的各部分依赖程度最小化的模块化设计。这样的设计使得节点从每笔交易都要计算、存储、传送的繁重压力里解放出,使得交易可在系统内并行化、异步处理,甚至跨链执行。这不仅能够提高区块链系统的交易吞吐量,解决现有区块链系统主要的性能限制问题,也使得移动设备、物联网终端等轻量级设备可独立参与区块链网络。
2)为满足隐私保护法和内容监管审查,区块链不可更改、不可删除的数据存储设计正被人们重新研究。区块链系统的状态转移必须是可验证的且无需检验全部的交易历史,因为交易账本可能会包含数据拥有者、法院、利益攸关方要求删除的泄露隐私、不恰当、或敏感的数据。
3)为快速创新和迭代,社区正试错式地设计和实现区块链系统,特别是智能合约。为了让区块链系统从存在错误风险的实验型系统转型成稳定的主流分布式系统,形式化验证技术正快速发展以检测区块链系统各个部分的漏洞和不安全因素,也有越来越多的协助软件工具帮助减少智能合约在编写使用时出现的错误。
4)现有的区块链系统,主要通过硬分叉来实现新功能、漏洞修复、新参数设置、协议升级,这需要所有节点手动下载和运行新的软件版本。现在每个硬分叉版本需要社区在链下进行个案式的协调和管理。为成为可持续性的平台,区块链系统正在试验链上治理和升级机制,以使决策制定和代码部署都能在链上高效透明地进行。
我们认为在众多基于区块链的实验和应用的推动下,区块链及其相关的分布式系统和密码学为基础的技术将迅速成熟,并为将来无形无界的未来系统提供关键的、具有安全和隐私保护功能的可信计算基础。其智能合约的概念也会进一步推动高效的数字化变革并大幅度提高生产力。
软件和硬件一体设计的革命
过去几十年中,通用硬件的研究一直是计算机体系结构研究的重点,例如CPU。云计算大规模应用及深度学习的出现,引发了当今对硬件体系结构设计的变革。
这样对于系统研究,软件和硬件的一体设计变为一个未来的重要趋势。如何更好的定义硬件和软件之间的边界以及合适的抽象、如何找出它们之间的最好划分成为了系统体系结构设计的重要问题。例如,对于深度学习、Tensor和计算图的引入就软件和硬件如何合作完成这种新的计算模式提出了新的要求;大数据领域、数据运算的抽象结合定制的加密和压缩芯片也将进一步提高云计算平台处理大数据的效率。
在新的一体化设计革命中,新的特定领域编程语言、编译器和优化、以及虚拟化技术也将同时变革。
硬件和体系结构的革命
计算机体系结构的进步和半导体集成电路的发展分不开。可以毫不夸张地说,计算机的发展是集成电路技术最大的推动力,也是最大的获益者。过去半个多世纪以来,集成电路一直大致保持着摩尔定律预测的速度发展,高度集成的芯片带来一次又一次计算机体系结构的革命,从个人电脑(Desktop)到移动计算,从服务器到云计算。而另一方面,计算的需求推动了中央处理器 (CPU)、内存(DRAM)、图形加速器 (GPU) 以及高速网络芯片的发展。而基于半导体硅的CMOS集成电路芯片技术由于受到物理规律的限制,已经开始达到瓶颈。一方面芯片的线宽(Feature Size)在5纳米以下已经很难进一步缩小,而另一方面功耗和散热已经成为现代芯片技术难以绕过的难题。在这种情况下,计算所需的硬件和体系结构会何去何从?
首先在计算上异构系统正成为近年来计算机体系结构研究的一个热点。深度学习加速器、FPGA为基础的可重构硬件、通用可编程加速器以及新的通用处理器都在不断创新。而内存硬件的创新例如高速非易失性内存(Non Volatile Memory,NVM)、内存封装的创新例如HBM(High Bandwidth Memory )以及体系结构的创新例如内存解聚(Memory Disaggregation)也将帮助计算从内存访问带宽和延迟的瓶颈中解放出来。
在存储上,NVM也可能是新的超低延迟SCM(Storage Class Memory)的基础。即SSD对数据中心存储带来巨大变革后,下一代开放通道(Open Channel)SSD会进一步提高数据中心存储系统的IO吞吐带宽以及降低开销。与此同时,存储系统、也需要类似内存解聚的体系结构创新。而在网络方面,低延迟无丢包的可扩放互联、可编程交换机和网卡会让计算间的互联(Interconnect)更加畅通。
系统和智能的相互促进
技术趋势:用系统思维的角度,以简洁、有序、一致性的原则重新设计深度学习系统的架构或模型,同时,利用统计学习的方法来分析复杂系统将是系统基础研究的重要方向。
为人工智能而设计的系统
为了能便捷高效的处理深度学习任务,围绕人工智能的系统工作也在如火如荼的展开。然而,由于深度学习计算模式和需求与以往大数据处理不同,该领域出现了大量具有探索性但较为“碎片化”的工作。例如,为了支持深度学习在不同的设备上计算,仅计算框架就先后出现了数十个,而且这些框架的设计独立,无法互相兼容,造成了大量重复性工作,且给用户带来很多选择上的困扰。另外,一些围绕深度学习的新系统工作仍在进行,这些大量碎片化的工作使得整个深度学习系统架构变得复杂而低效。因此,现在急需用系统思维的角度,以简洁、有序、一致性的原则重新设计深度学习系统的架构或模型。如何较好的解决人工智能系统领域中存在的低效、不一致、易用性差等问题,成为未来人工智能系统研究的一个发展趋势和重要方向。
自动化的编译和优化框架将成为人工智能系统栈中解决编程灵活性和计算性能的关键部分
未来的人工智能计算系统的前端表达能力将越来越灵活,逐渐趋于通用计算;同时,后端的计算能力将越来越强大。面对前、后端的快速发展,自动化的编译优化框架成为了衔接两者的必经之路。深度学习编译器往往从更高的计算抽象层出发,涉及到如元编程模型、高维数据结构、自动化求导等,并需要解决更复杂的优化问题,例如如何统一前后端语言从而实现全面的代码优化、针对加速芯片的模型稀疏化和模型压缩、自动化的代码融合以及与其它计算逻辑的融合等都会成为人工智能自动化编译框架中亟待解决的问题。
在人工智能时代,大规模计算系统不仅要在大规模设备上才能高效地处理海量数据,更需要能支持多种不同类型任务的混合执行的能力。未来,不同的计算任务在实际中的边界将变得越来越模糊,很多现实的应用中的数据分析都是由这些计算任务组合而成的综合体。这样的综合系统将会面临一些新的挑战,如系统接口的抽象、执行机制的设计以及全局系统的优化等。但同时,这样的系统能更好的对计算资源进行管理和利用,对整体计算应用可以从整体计算流水线上进行优化,在研究上也暴露出更多的跨任务种类的调度和优化机会,跨任务类型的大规模计算系统将会成为新的系统发展方向。
更智能化的系统
现在和将来,如何利用统计学习的方法来分析复杂系统将是系统基础研究的重要方向。
传统的系统研究以量化分析和形式化方法为基础来描述和分析系统的行为和性能。但是现在更多大型系统有着更多的随机性,控制变量和环境变量大大增加。这些新的变化,让人工智能可能发挥更大的作用。现在,在诸如数据中心制冷系统控制、数据中心数据存储优化、网络负载均衡等领域,基于统计学习的方法正得到广泛应用。在将来,系统研究者需要探索如何将该方法更加广泛的应用到大型复杂系统的设计和控制中去。
相信以上技术的协同发展,会助力底层计算机系统的创新和设计,成为推动计算世界无形无界的那只手。
未来可期。
本文作者:陈亮,陈洋,李博杰,刘云新,薛继龙,杨懋,张霖涛,张宪,周礼栋
你也许还想看:
感谢你关注“微软研究院AI头条”,我们期待你的留言和投稿,共建交流平台。来稿请寄:msraai@microsoft.com。